/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.losalpes.persistence.entity;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;

/**
 *
 * @author Henry.Quiroga
 */
@Entity
public class Cliente implements Cloneable, Serializable  {

    private long id;
    private String tipoDocumento;
    private String documento;    
    private String nombre;
    private String telefonoResidencia;
    private String telefonoCelular;
    private String direccion;
    private Ciudad ciudadResidencia;
    private String profesion;
    private String email;

    /**
     *constructor de la clase
     */
    public Cliente() {
    }

    /**
     * Identificador unico del cliente
     * @return
     */
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    public long getId() {
        return id;
    }

    /**
     * Establece el identificador unico del cliente
     * @return
     */
    public void setId(long id) {
        this.id = id;
    }


    /**
     * Obtiene la ciudad de residencia del cliente
     * @return
     */
    @ManyToOne
    public Ciudad getCiudadResidencia() {
        return ciudadResidencia;
    }

    /**
     * Establece la ciudad de residencia del cliente
     * @param ciudadResidencia
     */
    public void setCiudadResidencia(Ciudad ciudadResidencia) {
        this.ciudadResidencia = ciudadResidencia;
    }

    /**
     * Obtiene la direccion del cliente
     * @return
     */
    public String getDireccion() {
        return direccion;
    }

    /**
     * Establece la direccion del cliente
     * @param direccion
     */
    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    /**
     * Obtiene el documento de identificacion del cliente
     * @return
     */
    public String getDocumento() {
        return documento;
    }

    /**
     * Establece el documento de identificacion del cliente
     * @param documento
     */
    public void setDocumento(String documento) {
        this.documento = documento;
    }
    
    /**
     * Obtiene el email del cliente
     * @return
     */
    public String getEmail() {
        return email;
    }

    /**
     * Establece el email del cliente
     * @param email
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * Obtiene el nombre del cliente
     * @return
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Establece el nombre del cliente
     * @param nombre
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Obtiene la profesion del cliente
     * @return
     */
    public String getProfesion() {
        return profesion;
    }

    /**
     * Establece la profesion del cliente
     * @param profesion
     */
    public void setProfesion(String profesion) {
        this.profesion = profesion;
    }

    /**
     * Obtiene el telefono celular del cliente
     * @return
     */
    public String getTelefonoCelular() {
        return telefonoCelular;
    }

    /**
     * Establece el telefono celular del cliente
     * @param telefonoCelular
     */
    public void setTelefonoCelular(String telefonoCelular) {
        this.telefonoCelular = telefonoCelular;
    }

    /**
     * Obtiene el telefono de residencia del cliente
     * @return
     */
    public String getTelefonoResidencia() {
        return telefonoResidencia;
    }

    /**
     * Establece el telefono de residencia del cliente
     * @param telefonoResidencia
     */
    public void setTelefonoResidencia(String telefonoResidencia) {
        this.telefonoResidencia = telefonoResidencia;
    }

    /**
     * Obtiene el tipo de documento del cliente
     * @return
     */
    public String getTipoDocumento() {
        return tipoDocumento;
    }

    /**
     * Estavlece el tipo de documento del cliente
     * @param tipoDocumento
     */
    public void setTipoDocumento(String tipoDocumento) {
        this.tipoDocumento = tipoDocumento;
    }

    /**
     * Permite duplicar un cliente para evitar el problema del almacenamiento
     * directo en caso de cancelar
     * @return
     */
    public Cliente Clone() {
        try {
            return (Cliente) this.clone();
        } catch (Exception ex) {
        }
        return null;
    }

}

